home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 147 / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin / docs / ippon / zmdplay / zmcall.s < prev    next >
Text File  |  1999-06-14  |  2KB  |  117 lines

  1. *    zmcall.s    ZMUSIC ver2.x 用関数
  2.  
  3.     .include    IOCSCALL.MAC
  4.     .include    ZMSCCALL.MAC    * ZMUSIC ver2.0 本に付属のもの
  5.  
  6.     .xdef    _ZmKeepCheck,_ZmInit,_ZmPlay,_ZmStop
  7.     .xdef    _ZmAdpcmSE,_ZmFadeOut
  8.  
  9.  
  10. _ZmKeepCheck:        * ZMUSIC が常駐しているか調べる
  11.             * out : d0.l = 0 常駐している
  12.             *         < 0  〃 していない
  13.     movem.l    d1/a0-a1,-(sp)
  14.  
  15.     suba.l    a1,a1
  16.     IOCS    _B_SUPER
  17.     move.l    d0,-(sp)        **
  18.  
  19.     moveq.l    #0,d1        * d1.l = 返り値
  20.     move.l    $8c.w,a0
  21.     subq.w    #8,a0
  22.     cmpi.l    #'ZmuS',(a0)+
  23.     bne    1f
  24.     cmpi.w  #'iC',(a0)+
  25.     beq    2f
  26. 1:    moveq.l #-1,d1
  27. 2:
  28.     move.l    (sp)+,d0        **
  29.     bmi    @f            * 既にスーパーだった
  30.     movea.l    d0,a1
  31.     IOCS    _B_SUPER
  32. @@:
  33.  
  34.     move.l    d1,d0
  35.     movem.l    (sp)+,d1/a0-a1
  36.     rts
  37.  
  38.  
  39.  
  40. *********************************************************
  41. _ZmInit:        * 音源/ドライバの初期化
  42.     Z_MUSIC    m_init
  43.     rts
  44.  
  45.  
  46.  
  47. *********************************************************
  48. _ZmPlay:        * .ZMD を演奏する
  49.             * in  :  8(a6) = データのアドレス
  50.             *        べた読みした.ZMD のアドレス(偶数アドレス)を指定
  51.             *    12(a6) = データのサイズ
  52.             * out : d0.l = エラーコード
  53.     link    a6,#0
  54.     movem.l    d1-d2/a0-a1,-(sp)
  55.  
  56.     movea.l    8(a6),a1    * データのアドレス
  57.     adda.w    #7,a1        * ヘッダを飛ばす
  58.     move.l    12(a6),d1    * データのサイズ
  59.     moveq.l    #0,d2        * 高速応答
  60.     Z_MUSIC    play_cnv_data
  61.  
  62.     movem.l    (sp)+,d1-d2/a0-a1
  63.     unlk    a6
  64.     rts
  65.  
  66.  
  67.  
  68. *********************************************************
  69. _ZmStop:        * 演奏を停止する
  70.     movem.l    d1-d4,-(sp)
  71.  
  72.     moveq.l    #0,d2
  73.     moveq.l    #0,d3
  74.     moveq.l    #0,d4
  75.     Z_MUSIC    m_stop
  76.  
  77.     movem.l    (sp)+,d1-d4
  78.     rts
  79.  
  80.  
  81.  
  82. *********************************************************
  83. _ZmAdpcmSE:        * ADPCM 効果音の再生
  84.             * in  :  8(a6) = ADPCM データへのポインタ
  85.             *    12(a6) = ADPCM データのサイズ
  86.             *    16(a6) = 周波数*256+PAN
  87.             *    20(a6) = 優先順位
  88.     link    a6,#0
  89.     movem.l    d1-d3/a0-a1,-(sp)
  90.  
  91.     movea.l    8(a6),a1
  92.     move.l    12(a6),d2
  93.     move.w    20+2(a6),d3
  94.     swap.w    d3
  95.     move.w    16+2(a6),d3
  96.     Z_MUSIC    se_adpcm1
  97.  
  98.     movem.l    (sp)+,d1-d3/a0-a1
  99.     unlk    a6
  100.     rts
  101.  
  102.  
  103.  
  104. *********************************************************
  105. _ZmFadeOut:        * フェードアウト
  106.             * in  : 8(a6) = フェードアウト速度(1~85)
  107.     link    a6,#0
  108.     movem.l    d1-d2,-(sp)
  109.  
  110.     move.l    8(a6),d2
  111.     Z_MUSIC    fade_out
  112.  
  113.     move.l    d1,d0
  114.     movem.l    (sp)+,d1-d2
  115.     unlk    a6
  116.     rts
  117.